﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using AvalonDock;
using System.Reflection;
using System.Data;
using CMISLibrary.Libraries;
using CMISLibrary;
using busDanhMuc;
using BaocaoNPC.common;

namespace NPCUS
{
    /// <summary>
    /// Interaction logic for UserDangNhap.xaml
    /// </summary>
    public partial class UserDangNhap : UserControl
    {
        private DataSet dsOD_DVI_QLY = new DataSet();
        private DataSet dsS_USER = new DataSet();
        private DataSet dsDnhap = new DataSet();
        string Ten_dviqly = "";
        string ma_dviqly = "";
        string maloi = "";
        // cls_S_USER_bus cls = new cls_S_USER_bus();
        public UserDangNhap()
        {
            InitializeComponent();
            Component.TabIndexManager.RegisterTabManagerWithSelectAll(this);
            Load_OD_DVI_QLY();
            Load_user();
        }
        private void Load_user()
        {
            try
            {
                dsDnhap = new DataSet();
                dsDnhap.ReadXml(@"C:\NPCUSConfig\UserInfo.xml");
                if (dsDnhap != null && dsDnhap.Tables[0].Rows.Count > 0)
                {
                    txtTenDangNhap.Text = dsDnhap.Tables[0].Rows[0]["USER"].ToString();
                    DataTable dv = dsOD_DVI_QLY.Tables[0].Select("MA_DVIQLY = '" + dsDnhap.Tables[0].Rows[0]["MA_DVIQLY"].ToString() + "'").CopyToDataTable();
                    cboDonViQly.Text = dv.Rows[0]["TEN_DVIQLY"].ToString();
                }
            }
            catch
            { }
        }
        private void Load_OD_DVI_QLY()
        {
           // cls_NPC_USER_bus cls = new cls_NPC_USER_bus();
            dsOD_DVI_QLY = GlobalServices.Service_NPCUS.GET_DVIQLY_QUANTRI();
            

            //dsOD_DVI_QLY = GlobalServices.Service_NPCUS.GET_DVIQLY_QUANTRI();
            //dsOD_DVI_QLY = cls.GET_DVIQLY_QUANTRI();
            cboDonViQly.DisplayMemberPath = "TEN_DVIQLY";
            cboDonViQly.ItemsSource = dsOD_DVI_QLY.Tables[0].DefaultView;
            cboDonViQly.SelectedValuePath = "TEN_DVIQLY";
            cboDonViQly.SelectedIndex = 0;
            //NPCUS_DanhMuc.Pglobal.strMa_dviqly = cls._strMa_dviqly;
        }
        public event OnPageNavigation_Delegate OnPageNavigation;
        static bool ValidateDate(String date, String format)
        {
            try
            {
                string formatShortDateSys = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern;

                if (formatShortDateSys.Substring(0, 1).ToUpper() == "M") // định dạng tháng trước, ngày sau
                    return true;
                else
                    return false;             
            }
            catch (Exception)
            {
                return false;
            }

            /*
            try
            {
                System.Globalization.DateTimeFormatInfo dtfi = new
                System.Globalization.DateTimeFormatInfo();
                dtfi.ShortDatePattern = format;
                DateTime dt = DateTime.ParseExact(date, "d", dtfi);
            }
            catch (Exception)
            {
                return false;
            }
            return true;
            */
        }

        private void btnLogIn_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                
                
                this.Cursor = Cursors.Wait;
                btnLogIn.Cursor = Cursors.Wait;
                if (!check_nhap())
                {
                    this.Cursor = null;
                    btnLogIn.Cursor = null;
                    return;
                }
                //cls_NPC_USER_bus cls = new cls_NPC_USER_bus();                
                dsS_USER = GlobalServices.Service_NPCUS.GET_USER_QUANTRI(txtTenDangNhap.Text.Trim(), txtPassword.Password.ToString().Trim(), ma_dviqly, ref maloi);
                if (dsS_USER == null)
                {
                    Component.Validate.ValidationManager.showMessOnView(this, 10000, maloi, Component.Validate.ValidationManager.MESSEGER_TYPE.ERROR_MESSAGE);
                    if (maloi == "Tên đăng nhập không tồn tại!") txtTenDangNhap.Focus();
                    if (maloi == "Tên đăng nhập sai mật khẩu!") txtPassword.Focus();
                    this.Cursor = null;
                    btnLogIn.Cursor = null;
                    return;
                }
                else
                {
                    if (dsS_USER.Tables[0].Rows.Count > 0)
                    {
                        // kiểm tra định dạng khác MM/dd/yyyy không cho đăng nhập chương trình
                        if (ValidateDate(DateTime.Now.ToShortDateString(), "MM/dd/yyyy") == false)
                        {
                            MessageBox.Show("Xem lại định dạng ngày của máy:'" + "MM/dd/yyyy" + "'", "Yêu cầu", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                            this.Cursor = null;
                            btnLogIn.Cursor = null;
                            return;
                        }

                        // kiểm tra dấu thập phân là chấm. hay phẩy,  --- chỉ sử dụng dấu chấm.
                        string strtp = "";
                        strtp = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator;
                        if (strtp != ".")
                        {
                            MessageBox.Show(" Dấu thập phân phải là dấu chấm !", "Yêu cầu", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                            this.Cursor = null;
                            btnLogIn.Cursor = null;
                            return;
                        }

                        NPCUS_DanhMuc.Pglobal.strMa_dviqly = ma_dviqly;
                        NPCUS_DanhMuc.Pglobal.strMa_dviqlyDnhap = ma_dviqly;
                        NPCUS_DanhMuc.Pglobal.strTen_dangnhap = txtTenDangNhap.Text.Trim();
                        NPCUS_DanhMuc.Pglobal.strTen_dviqly = Ten_dviqly;
                        NPCUS_DanhMuc.Pglobal.strTen_dviqlyDnhap = Ten_dviqly;
                        NPCUS_DanhMuc.Pglobal.intUserID = Convert.ToInt64(dsS_USER.Tables[0].Rows[0]["USERID"]);

                        DataSet ds = new DataSet();
                        //cls_D_DVI_QLY clsdviqly = new cls_D_DVI_QLY();
                        ds = GlobalServices.Service_NPCUS.select_D_DVI_QLY_captren(ma_dviqly);
                        if (ds != null && ds.Tables[0].Rows.Count > 0)
                        {
                            NPCUS_DanhMuc.Pglobal.strTen_dviqly_CT = ds.Tables[0].Rows[0]["TEN_DVIQLY"].ToString();
                        }
                        else
                        {
                            NPCUS_DanhMuc.Pglobal.strTen_dviqly_CT = "";
                        }
                    }
                    else
                    {
                        Component.Validate.ValidationManager.showMessOnView(this, 10000, "Không tồn tại tên đăng nhập", Component.Validate.ValidationManager.MESSEGER_TYPE.ERROR_MESSAGE);
                        txtTenDangNhap.Focus();
                        this.Cursor = null;
                        btnLogIn.Cursor = null;
                        return;
                    }
                }
                write_inforUser(txtTenDangNhap.Text.Trim(), ma_dviqly);
                OnPageNavigation(sender, e, Convert.ToInt16(dsS_USER.Tables[0].Rows[0]["TYPEOFUSER"]));
            }
            catch (Exception ex)
            {
                this.Cursor = null;
                btnLogIn.Cursor = null;
                Component.Validate.ValidationManager.showMessOnView(this, 10000, ex.ToString(), Component.Validate.ValidationManager.MESSEGER_TYPE.ERROR_MESSAGE);
            }

        }
        private void write_inforUser(string user, string ma_dviqly)
        {
            DataTable dt = new DataTable();
            DataColumn Col = dt.Columns.Add("USER", typeof(String));
            dt.Columns.Add("MA_DVIQLY", typeof(String));
            DataRow newrow = dt.NewRow();
            newrow["USER"] = user;
            newrow["MA_DVIQLY"] = ma_dviqly;
            dt.Rows.Add(newrow);
            dsDnhap = new DataSet();
            dsDnhap.Tables.Add(dt);
            dsDnhap.WriteXml(@"C:\NPCUSConfig\UserInfo.xml");
        }
        private bool check_nhap()
        {
            if (txtTenDangNhap.Text.Trim() == "")
            {
                Component.Validate.ValidationManager.showMessOnView(this, 10000, "Chưa nhập tên đăng nhập!", Component.Validate.ValidationManager.MESSEGER_TYPE.ERROR_MESSAGE);
                txtTenDangNhap.Focus();
                return false;
            }
            return true;
        }

        private void cboDonViQly_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            DataTable dt = dsOD_DVI_QLY.Tables[0].Copy();
            dt.DefaultView.RowFilter = "TEN_DVIQLY = '" + cboDonViQly.SelectedValue.ToString() + "'";
            if (dt.DefaultView.Count > 0)
            {
                Ten_dviqly = dt.DefaultView[0]["TEN_DVIQLY"].ToString();
                ma_dviqly = dt.DefaultView[0]["MA_DVIQLY"].ToString();
            }
        }

        private void txtPassword_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Enter)
            {
                cboDonViQly.Focus();
            }
        }
    }
}
